//package com.juben.svr.demos.web;
//
//import com.itextpdf.html2pdf.HtmlConverter;
//import com.itextpdf.kernel.font.PdfFont;
//import com.itextpdf.kernel.font.PdfFontFactory;
//import com.itextpdf.kernel.pdf.PdfDocument;
//import com.itextpdf.kernel.pdf.PdfWriter;
//import org.springframework.web.bind.annotation.*;
//
//
//import java.io.*;
//import java.nio.charset.StandardCharsets;
//
//
//////
//@RestController
//@RequestMapping("/api")
//@CrossOrigin(origins = "http://localhost:5173",allowedHeaders = "*",allowCredentials = "true")  //用于处理CORS（跨源资源共享）问题；允许来自http://localhost:5173的跨域请求；origins = ""表示允许所有源进行访问
//public class PdfController {
//
//    // 指定 PDF 文件保存的目录
//    private static final String PDF_DIRECTORY = "D:/pdfs/";
//    private static  final  String FONT_PATH = "阿里妈妈刀隶体/AlimamaDaoLiTi.ttf";
//
//    @PostMapping("/create-pdf")
//    public String generatePdf(@RequestBody PdfRequest request){
//        System.out.println("Received HTML: " + request.getHtml());
//        // 验证 HTML 内容
//        if (request.getHtml() == null || request.getHtml().trim().isEmpty()) {
//            return "Error: HTML content must not be empty.";
//        }
//        System.out.println("Received HTML: " + request.getHtml());
//        // 确保目录存在，如果不存在则创建
//        File pdfDir = new File(PDF_DIRECTORY);
//        if (!pdfDir.exists()) {
//            pdfDir.mkdirs(); // 创建目录
//        }
//        // 定义生成的 PDF 文件路径;确保文件名唯一
//        String fileName = "example_" + System.currentTimeMillis() + ".pdf";
//        String filePath = PDF_DIRECTORY + fileName;
//        System.out.println("PDF file path: " + filePath);
//
//        // 创建 PDF 文档html2pdf
//        try (FileOutputStream fos = new FileOutputStream(filePath)) {
//            //设置中文字体
//
//
//            // 使用 ByteArrayInputStream 创建 InputStream
//            ByteArrayInputStream htmlInputStream = new ByteArrayInputStream(request.getHtml().getBytes(StandardCharsets.UTF_8));
//            HtmlConverter.convertToPdf(htmlInputStream, fos);
//            return "PDF generated successfully. Saved at: " + filePath;
//        }catch (IOException e){
//            e.printStackTrace();
//            return "Error generating PDF: I/O error - " + e.getMessage();   // 返回错误信息
//        }catch (Exception e){
//            e.printStackTrace();
//            return "Error generating PDF: " + e.getMessage();   // 返回错误信息
//        }
//    }
//
//
////    @PostMapping("/generate-pdf")
////    public String generatePdf(@RequestBody PdfRequest request) throws IOException {
////        System.out.println("Received HTML: " + request.getHtml());
////        ITextRenderer renderer = new ITextRenderer();
////        // 输出接收到的 HTML 文本
////
////        // 验证 HTML 内容
////        if (request.getHtml() == null || request.getHtml().trim().isEmpty()) {
////            return "Error: HTML content must not be empty.";
////        }
////        System.out.println("Received HTML: " + request.getHtml());
////
////        // 确保目录存在，如果不存在则创建
////        File pdfDir = new File(PDF_DIRECTORY);
////        if (!pdfDir.exists()) {
////            pdfDir.mkdirs(); // 创建目录
////        }
////
////        // 定义生成的 PDF 文件路径;确保文件名唯一
////        String fileName = "example_" + System.currentTimeMillis() + ".pdf";
////        String filePath = PDF_DIRECTORY + fileName;
////        System.out.println("PDF file path: " + filePath);
////
////        // 创建 PDF 文档
////        boolean isClosed = false; // 新增布尔标记以跟踪文档状态
////        PdfDocument pdfDocument = null;
////        try (FileOutputStream fos = new FileOutputStream(filePath);
////
////             PdfWriter pdfWriter = new PdfWriter(fos);
////
////             // 使用 PdfDocument 来封装 PdfWriter
////            ){
////            System.out.println("开始写入 PDF");
////            pdfDocument = new PdfDocument(pdfWriter);
////
////
////
////            // 使用 HtmlConverter 方法转换 HTML 为 PDF
////            HtmlConverter.convertToPdf(request.getHtml(), pdfWriter);
////            System.out.println("PDF 写入完成");
////
////
////            // 关闭 PDF 文档
////            //pdfDocument.close();
////
////            // 正常情况下文档完成后可以正常返回
////            return "PDF generated successfully. Saved at: " + filePath;
////        }catch (IOException e){
////            e.printStackTrace();
////            return "Error generating PDF: I/O error - " + e.getMessage();
////        }catch (Exception e) {
////            e.printStackTrace();
////            return "Error generating PDF: " + e.getMessage(); // 返回错误信息
////        }finally {
////            // 关闭文档的逻辑
////            if (!isClosed) {
////                try {
////                    // 尝试关闭 PdfDocument，这里需要确保 pdfDocument 变量仍在作用域内
////                    // 根据之前的状态，您可以在其他业务逻辑下操作isClosed标志
////                    if (pdfDocument != null && !pdfDocument.isClosed()) {
////                        System.out.println("PDF 文档未关闭，尝试关闭...");
////                        //pdfDocument.close();
////                    }
////                } catch (Exception e) {
////                    e.printStackTrace(); // 错误处理
////                }
////            }
////            System.out.println("PDF 文档已关闭");
////        }
////    }
//}
//class PdfRequest1 {
//    private String html; // 用于存储富文本内容（HTML格式）
//
//    // Getters and Setters
//    public String getHtml() {
//        return html;
//    }
//
//    public void setHtml(String html) {
//        this.html = html;
//    }
//}
//
//
